<?php
/**
 * Created by Zhy
 * User: Zhy
 * Date: 2023/12/8
 * Time: 16:45
 */

namespace app\api\validate;

use app\lib\exception\ParameterException;
use think\Exception;
use think\Request;
use think\Validate;

class BaseValidate extends Validate
{

    /**
     * 验证客户端参数是否符合验证要求，符合返回true，不符合则返回异常
     * @param $data
     * @return array|\think\response\Json
     * @throws ParameterException
     *
     */
    public function goCheck()
    {
        //获取需要验证的数据
        $params = Request::instance()->param();
        //参数验证
        $result = $this->check($params);
        if(!$result) {//如果参数不符合验证要求，则抛出异常
            $exception = new \Exception($this->getError());
            return ['status' => 0, 'msg' => $exception->getMessage()];
        } else {
            return ['status' => 200, 'msg' => ''];
        }
    }

    /**
     * 验证ID是否是正整数
     * @param $value  验证数据
     * @param string $rule 验证规则
     * @param string $data 全部数据（数组）
     * @param $field  字段名
     * @return bool|string
     */
    public function isPositiveInteger($value)
    {
        if(is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
            //is_numeric:判断是否是数字  is_int:判断是否是整型  ($value + 0) > 0:判断是否是正数
            return true;
        } else {
            return false;
        }
    }

    /**
     * 验证手机号
     * @param $value  验证数据
     * @param string $rule 验证规则
     * @param string $data 全部数据（数组）
     * @param $field  字段名
     * @return bool|string
     */
    public function phoneCheck($value)
    {
        if(!preg_match("/^1[123456789]\d{9}$/", $value)){
            return false;
        }else{
            return true;
        }
    }
}